package org.forever.util
{
	/**
	* 基于列表实现的元素迭代器
	*/
	public class IteratorElement implements Iterator
	{
		private var list:List;//列表
		private var nextPosition:Position;//当前（下一个）元素的位置
		
		public function IteratorElement(L:List)
		{
			list = L;
			if (list==null || list.isEmpty()){//如果集合为空
				nextPosition = null;//当前元素置空
			}else{
				nextPosition = list.first();//从第一个元素开始
			}
		}
		
		/**检查迭代器中是否还有剩余的元素*/
		public function hasNext():Boolean
		{
			return (nextPosition!=null);
		}
		
		/**返回迭代器中的下一元素*/
		public function getNext():Object
		{
			if(!hasNext()){
				throw new Error("异常：没有下一个元素");
			}
			var currentPosition:Position = nextPosition;
			if (currentPosition == list.last()){//若已到达尾元素，则
				nextPosition = null;//不再有下一个元素
			}else{
				nextPosition = list.getNext(currentPosition);//否则转向下一元素
			}
			return currentPosition.getElem();
		}
	}
}